Easy Time Tracker

1. Vorstellung
Wie der Name schon sagt, ermöglich der ETT einfaches erfassen und abrechnen von Arbeitszeit für kleine bis mittlere Unternhemen.
2. Features
    - Erfassen von Arbeitszeit mit Plausi-Check(Überschneidungen)
    - Aufteilung in Kunden->Projekte->Aufgaben
    - Einfache Rechte-Verwaltung für anlegen, löschen und bearbeiten von Kunden, Projekten, Aufgaben und Benutzern, sowie Anmleden und Abrechnen.
    - Rudimentärer Brute-Force Schutz. IPs die zu oft falsch Anmelden oder versuchen die Rechte zu umgehen werden Zeit X geblockt.
    - Zeit-Abrechnung per Projekt.

2. Motivation
    Verfügbare Zeiterfassungssysteme sind entweder auf Enterprise-Level und kosten zu viel oder sie haben zu viele Abhängigkeiten die Probleme machen(Node.js, jquery, usw.) die nicht auf jedem System laufen(z.B. ARM). 

    Also war das Entwicklungsziel ein möglichst minimalistisches Zeit-Erfassungs und -Abrechungs-System zu bauen, das möglichst keine Abhängigkeiten haben sollte.

3. Installation
    3.1 Abhängigkeiten
        eine laufende MYSQL-DB oder vergleichbar(MARIA-DB).
        Web-Server mit PHP Unterstützung (z.B. NGINX)
    3.2 Installation
        Dateien ins Web-Verzeichnis kopieren
        Datei-Rechte anpassen
        DB-Verbindung in config.php anpassen.
        DB mit "setup.sql" initialisieren.
        Optional: Sprache in config.php festlegen(LANG). Verfügbar sind 'en' und 'de'
        Optional: Test daten befinden sich in "testdata.sql".
        Anmeldung mit als "admin" pw: "admin" und über die Benutzerverwaltung(links oben) das Passwort ändern.
        Fertig.

4. Anpassungen
    4.1 Sprache
        Wer eine weitere Sprache hinzufügen möchte, muss im "lang" unterverzeichnis eine entsprechende txt-Datei anlegen und diese mit allen Übersetzungen nach dem Beispiel von en.txt und de.txt füllen.
        ACHTUNG: Manche überseteungen sind formate für sprintf/printf und sind entsprechend zu behandeln. Da die reihenfolge der Argumente im Code feset ist, sollte diese bei bedarf mit "%2s xxxzzzzyyy %1s" verändert werden, wo nötig.
        VERWENDE NIE ":" in deiner Übersetzung, weil es das Trennzeichen zwischen Schlüssel und Übersetzung ist.

5. Credits
    The Oxygen Icon Theme
    Copyright (C) 2007 Nuno Pinheiro <nuno@oxygen-icons.org>
    Copyright (C) 2007 David Vignoni <david@icon-king.com>
    Copyright (C) 2007 David Miller <miller@oxygen-icons.org>
    Copyright (C) 2007 Johann Ollivier Lapeyre <johann@oxygen-icons.org>
    Copyright (C) 2007 Kenneth Wimer <kwwii@bootsplash.org>
    Copyright (C) 2007 Riccardo Iaconelli <riccardo@oxygen-icons.org>

    Verwendete Icons sind alle vom "The Oxygen Icon Theme" welches die "GNU LESSER GENERAL PUBLIC LICENSE" verwendet. Details unter "icons/icon_License.txt"
    JS Time- und Date-Picker
    Da <input type="datetime"> leider bei den meisten Browsern immer noch "Neuland" ist und ich das Rad nicht zum 100sten mal neu erfinden wollte, griff ich auf folgende Java Scripte zurück:
    
    vanilla.datepicker.(js|css) -> Author: xylphid, License: MIT, Source: https://www.cssscript.com/lightweight-date-picker-in-vanilla-javascript/
    Dieser musste wegen ungünstiger platzierung des Auswahlfensters modifizert werden. 
    js-timepicker.(js|css) -> Author: Via-profit, License: MIT, Source: https://www.cssscript.com/minimal-timer-picker-pure-javascript/



6. Tests
    Das Projekt wurde auf einem Linux Rechner mit NGINX / MARIA-DB getestet und entwickelt.

7. Weitere Entwicklung
    Nachdem die Kern-Features rund laufen ist für mich die Entwicklung abgeschlossen. 
    Falls ich mal zu viel Zeit haben sollte, werde ich Multi-Sprach-Unterstützung umsetzten.
    Differenziertere Rechte-Verwaltung, wäre auch noch denkbar.
    Wer dennoch weitere Funktionen implementiert haben möchte kann mir gerne ein Angebot machen oder selber entwickeln.

